home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol033 / disklib2.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  4.9 KB  |  101 lines

  1. 10 ' *DISKPGM1.BAS   NEW 10/16/82 Rich Schinnell Rockville,Md 20853
  2. 20 CLS:KEY OFF:DIS#=156056!:TOT#=0
  3. 30 PRINT "(C) Copyright 1982,, Richard Schinnell,Rockville, MD. 20853 (301) 949-8848
  4. 40 PRINT "This program will check each FILE on your disk for DATES,BYTES and
  5. 50 PRINT"the time it will take to transfer it at 300 baud "
  6. 60 PRINT"Place your printer on-line and put it to the top of a page please.
  7. 70 PRINT:LOCATE 10,1,1:COLOR 23,0:
  8. 80 LOCATE 10,1,1:COLOR 28,0:PRINT" What NAME do you wish to print on the printer as the"
  9. 90 PRINT" name of the disk ? (50 Character Title only allowed ":COLOR 7,0
  10. 100 LOCATE 18,1,1:PRINT "> ";:CUM1$=""
  11. 110 CUMRICH$=INKEY$:IF LEN(CUMRICH$)>0 THEN IF ASC(CUMRICH$)=13 THEN 200
  12. 120 IF LEN(CUMRICH$)<1 THEN 110
  13. 130 IF LEN(CUMRICH$)>1 THEN BEEP:GOTO 110
  14. 140 IF ASC(CUMRICH$)=8 AND POS(0)<4 THEN BEEP:CUM1$="":GOTO 180
  15. 150 IF ASC(CUMRICH$)=8 THEN CUM1$=LEFT$(CUM1$,(LEN(CUM1$)-1)):CUMRICH$="":LOCATE 18,POS(0)-1:PRINT " ";
  16. 160 CUM1$=CUM1$+CUMRICH$
  17. 170 IF LEN(CUM1$)>49 THEN BEEP:CUM1$=LEFT$(CUM1$,50):CUMRICH$=""
  18. 180 LOCATE 24,1,0:PRINT "you Have ";RIGHT$(STR$(50-LEN(CUM1$)),2);" characters left ";RIGHT$(STR$(LEN(CUM1$)),2);" used up so far ";
  19. 190 LOCATE 18,3,0:PRINT CUM1$;:LOCATE 18,POS(0),1:GOTO 110
  20. 200 TITLE$=CUM1$
  21. 210 COLOR 23,0,1:PRINT:PRINT" Which disk drive to you wish to check>  : ";:COLOR 7,0
  22. 220 RICH$=INKEY$:IF LEN(RICH$)<>1 THEN 220
  23. 230 IF ASC(RICH$)>96 AND ASC(RICH$)<103 THEN RICH$=CHR$(ASC(RICH$)-32)
  24. 240 IF INSTR("ABCDEF",RICH$)<1 THEN BEEP:GOTO 210
  25. 250 DRIV$=LEFT$(RICH$,1)+":"
  26. 260 ON ERROR GOTO 640
  27. 270 FALSE=0:TRUE=NOT FALSE:DEFINT A-Z:L=0:CLS:CODE=43:DIM F$(175)
  28. 280 FILES DRIV$+"*.*"
  29. 290 CLINE1 = CSRLIN
  30. 300 D=0
  31. 310 LOCATE 1,1,1
  32. 320 FOR I = 1 TO CLINE1
  33. 330 FOR B = 1 TO 66 STEP 13
  34. 340 D=D+1
  35. 350 FOR N = 0 TO 11
  36. 360 T = SCREEN(I,(B+N)):F$(D)=F$(D)+CHR$(T)
  37. 370 NEXT N
  38. 380 IF LEFT$(F$(D),1)=" " THEN D=D-1 :GOTO 420
  39. 390 F$(D)= DRIV$+F$(D)
  40. 400 NEXT B
  41. 410 NEXT I
  42. 420 LOCATE 15,1:COLOR 26,0:PRINT "ALPHABETIZING THE FILE NAMES ":COLOR 7,0
  43. 430 ' THIS ALPHABETIZES THE ARRAY
  44. 440 FOR X=1 TO D-1:FOR Y=X+1 TO D:IF F$(Y)<F$(X) THEN SWAP F$(X),F$(Y)
  45. 450 NEXT Y:NEXT X
  46. 460 CLS:LOCATE 12,25:COLOR 28,0:PRINT " WORKING FILES ":COLOR 7,0
  47. 470 LPRINT:LPRINT"        (C) COPYRIGHT,1982, RICHARD SCHINNELL,ROCKVILLE,MD"
  48. 480 LPRINT
  49. 490 LPRINT TITLE$;" Time ";TIME$;" Date ";DATE$
  50. 500 LPRINT
  51. 510 LPRINT " FILESPEC          Date          Bytes          Transfer time"
  52. 520 LPRINT "-------------      ----------    ------         MM:SS "
  53. 530 FOR P = 1 TO D
  54. 540 GOSUB 670
  55. 550 TOT#=TOT#+L#
  56. 560 NEXT P
  57. 570 LPRINT:LPRINT
  58. 580 LPRINT P-1;" FILES on  ";TITLE$:LPRINT USING "###,###  Bytes used on this diskett ";TOT#;
  59. 590 LEFT#=DIS#-TOT#
  60. 600 LPRINT:LPRINT USING "###,###  Bytes left on this diskette ";LEFT#;
  61. 610 LPRINT
  62. 620 CLS:PRINT "YOU ARE BACK IN BASIC NOW "
  63. 630 END
  64. 640 PRINT "ERROR ";ERR;" HAS OCCURED IN LINE # ";ERL
  65. 650 IF ERR>23 AND ERR<27 THEN PRINT " PLACE YOUR PRINTER ON LINE PLEASE:
  66. 660 END
  67. 670 ' Subroutine to get filesize/date and compute transfer times
  68. 680 ' Written by Rich Schinnell Rockville,Md 20853
  69. 690 ' Copyright 1982, Free to anyone on a not-for-profit basis.
  70. 700 ' Not to be sold for profit, Can be given away only.......
  71. 710 ' All rights reserved.........E N J O Y ! ! ! ! ! ! ! ! !
  72. 720 OPEN F$(P) FOR INPUT AS #1
  73. 730 FCB1% = VARPTR(#1)                 'SET PTR TO FCB FOR INPUT FILE
  74. 740 BYTESIZ1# = PEEK(FCB1%+17)+256*PEEK(FCB1%+18)+256*256*PEEK(FCB1%+20)                +256*256*256*PEEK(FCB1%+19)     'Calculate file size in bytes
  75. 750 TDATE% = PEEK(FCB1%+21) OR 256*PEEK(FCB1%+22)
  76. 760 CLOSE #1
  77. 770 T = INT(BYTESIZ1#/30):M=INT(T/60):S=T-M*60:IF S<1 THEN S =1
  78. 780 IF S < 10 THEN S$="0"+RIGHT$(STR$(S),1) ELSE S$=RIGHT$(STR$(S),2)
  79. 790 DTYR% = (TDATE% \ (256*2) ) + 1980
  80. 800 DTI# = (TDATE% - (DTYR% - 1980) * (256*2))
  81. 810 DTMO% = DTI# \ 32
  82. 820 DTDA% = DTI# - DTMO% * 32
  83. 830 SDATE$ = "0M-0D-YYYY"
  84. 840 MID$( SDATE$,1,2 ) = RIGHT$( STR$(DTMO%+100) ,2)
  85. 850 IF VAL(LEFT$(SDATE$,2))<10 THEN MID$(SDATE$,1,1)="0"
  86. 860 MID$( SDATE$,4,2 ) = RIGHT$( STR$(DTDA%+100), 2 )
  87. 870 MID$( SDATE$,7,4 ) = RIGHT$( STR$(DTYR%), 4 )
  88. 880 T = INT(BYTESIZ1#/30):M=INT(T/60):S=T-M*60:L#=BYTESIZ1#
  89. 890 IF S <10 THEN S$="0"+RIGHT$(STR$(S),1) ELSE S$=RIGHT$(STR$(S),2)
  90. 900 'SDATE$= DATE file was last updated
  91. 910 ' l# = filesize in bytes ###### format
  92. 920 ' M = minutes to transfer at 300 baud
  93. 930 ' s$ = seconds to transfer at 300 baud leading zero s = seconds no zero
  94. 940 ' this method only works in intrepeted basic. If you are going to
  95. 950 ' compile a pgm then you can't use the varptr you have to peek at a
  96. 960 ' high memory value, I have found it if you wish to know it just give
  97. 970 ' Rich Schinnell a call and I will be glad to help you... Rich
  98. 980 PRINT USING "\            \     \        \    ######         ##:\\ ";F$(P);SDATE$;L#;M;S$
  99. 990 LPRINT USING "\            \     \        \    ######         ##:\\ ";F$(P);SDATE$;L#;M;S$
  100. 1000 RETURN
  101. );SDATE$;L#;M;S$
  102.